#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
数据预览程序使用示例
演示如何使用自定义路径预览数据
"""

from data_preview import DataPreview
from pathlib import Path

def example_with_custom_path():
    """
    使用自定义路径的示例
    """
    print("📖 数据预览程序使用示例")
    print("=" * 80)
    
    # 使用测试数据目录作为示例
    custom_path = "tests/sample_data"
    
    print(f"🎯 使用自定义路径: {custom_path}")
    print()
    
    # 创建数据预览器实例
    previewer = DataPreview(custom_path)
    
    # 预览数据（显示前3行）
    file_info_list = previewer.preview_all_data(max_rows=3)
    
    # 保存报告到自定义位置
    if file_info_list:
        output_file = "example_data_summary.json"
        previewer.save_summary_report(file_info_list, output_file)
        print(f"\n📋 示例报告已保存到: {output_file}")
    
    return file_info_list

def example_single_file_analysis():
    """
    单个文件分析示例
    """
    print("\n🔬 单个文件分析示例")
    print("=" * 80)
    
    previewer = DataPreview("tests/sample_data")
    
    # 获取所有文件
    data_files = previewer.get_data_files()
    
    if data_files:
        # 分析第一个文件
        first_file = data_files[0]
        print(f"📄 分析文件: {first_file.name}")
        
        file_info = previewer.read_file_header(first_file, max_rows=10)
        
        if not file_info['error']:
            print(f"   📊 文件大小: {previewer.format_file_size(file_info['file_size'])}")
            print(f"   📋 数据形状: {file_info['shape']}")
            print(f"   🏷️  列数: {len(file_info['columns'])}")
            print(f"   📝 列名: {', '.join(file_info['columns'][:5])}{'...' if len(file_info['columns']) > 5 else ''}")
        else:
            print(f"   ❌ 读取失败: {file_info['error']}")

def example_file_filtering():
    """
    文件过滤示例
    """
    print("\n🔍 文件过滤示例")
    print("=" * 80)
    
    previewer = DataPreview("tests/sample_data")
    data_files = previewer.get_data_files()
    
    # 按文件类型分组
    file_types = {}
    for file_path in data_files:
        ext = file_path.suffix.lower()
        if ext not in file_types:
            file_types[ext] = []
        file_types[ext].append(file_path.name)
    
    print("📁 按文件类型分组:")
    for ext, files in file_types.items():
        print(f"   {ext}: {len(files)} 个文件 - {', '.join(files)}")
    
    # 只处理CSV文件
    csv_files = [f for f in data_files if f.suffix.lower() == '.csv']
    if csv_files:
        print(f"\n📊 处理 {len(csv_files)} 个CSV文件:")
        for csv_file in csv_files:
            file_info = previewer.read_file_header(csv_file, max_rows=2)
            if not file_info['error']:
                print(f"   - {csv_file.name}: {file_info['shape'][0]} 行, {file_info['shape'][1]} 列")

def main():
    """
    主函数 - 运行所有示例
    """
    try:
        # 示例1: 使用自定义路径
        file_info_list = example_with_custom_path()
        
        # 示例2: 单个文件分析
        example_single_file_analysis()
        
        # 示例3: 文件过滤
        example_file_filtering()
        
        print("\n" + "=" * 80)
        print("✅ 所有示例运行完成!")
        print("\n💡 提示:")
        print("   - 修改 data_preview.py 中的路径为你的实际数据路径")
        print("   - 支持的格式: CSV, Excel, JSON, Parquet, TSV, TXT")
        print("   - 生成的报告包含详细的数据结构信息")
        
    except Exception as e:
        print(f"❌ 示例运行失败: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    main()